#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

echo "🔍 开始执行代码提交前检查..."

# 添加错误处理函数
handle_error() {
    echo "❌ $1"
    exit 1
}

# 检查命令是否存在
command_exists() {
    command -v "$1" >/dev/null 2>&1
}

# 安全执行npm script
safe_npm_run() {
    local script=$1
    local error_msg=$2
    
    if npm run "$script" >/dev/null 2>&1; then
        echo "✅ $script 检查通过"
        return 0
    else
        echo "⚠️ $script 检查失败或不存在，跳过"
        return 0  # 不强制失败，继续执行
    fi
}

# 1. 执行代码格式化检查
echo "📝 执行Prettier格式化检查..."
if command_exists prettier; then
    if npm run prettier:check >/dev/null 2>&1; then
        echo "✅ Prettier检查通过"
    else
        echo "⚠️ Prettier检查失败，自动修复中..."
        npm run prettier:fix
        echo "✅ Prettier已自动修复"
    fi
else
    echo "⚠️ Prettier未安装，跳过格式检查"
fi

# 2. 执行ESLint检查（宽松模式）
echo "🔧 执行ESLint代码质量检查..."
safe_npm_run "lint" "ESLint检查失败"

# 3. 执行TypeScript类型检查（宽松模式）
echo "🔍 执行TypeScript类型检查..."
if npm run type-check >/dev/null 2>&1; then
    echo "✅ TypeScript类型检查通过"
else
    echo "⚠️ TypeScript类型检查失败或不存在，跳过"
fi

# 4. 跳过测试（开发阶段）
echo "🧪 跳过单元测试（开发阶段）"

# 5. 跳过commit信息检查（由commitlint处理）
echo "📋 跳过commit信息检查（由commitlint单独处理）"

echo "✅ 提交前检查完成，允许提交代码" 